home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / tcxl551.zip / TCXL_INC.EXE / lha / INC / TCXLMEM.H < prev    next >
Text File  |  1990-10-01  |  11KB  |  198 lines

  1. /*=====[ The TesSeRact(TM) CXL User Interface Development System ]======*
  2.  | Copyright (c) 1987-1990, Innovative Data Concepts. All Rights Reserved
  3.  |
  4.  | This Library is part of IDC's TesSeRact Development Tools product
  5.  | line. For information about other IDC products, call 1-215-884-3373.
  6.  *----------------------------------------------------------------------*
  7.  | <TCXLmem.h> : Definitions and prototypes for TCXL memory subsystem.
  8.  *-------------------------------[ Notes ]------------------------------*
  9.  | 1) Refer to the EMS, XMS, VCPI and DPMI specifications for further
  10.  |    information.
  11.  | 2) All pointers used by these functions are FAR pointers.
  12.  *----------------------------------------------------------------------*
  13.  | PGS : $Id: tcxlmem.h 5.51 90/10/01 00:00:00 MLM Release Locker: MLM $
  14.  | $Log:    tcxlmem.h $
  15.  | Revision 5.51  90/10/01  00:00:00  MLM
  16.  | TCXL 5.51
  17.  | 
  18.  *======================================================================*/
  19. #ifndef  _TCXLmem_
  20. #  define   _TCXLmem_   1
  21. #  ifndef   _TCXLdef_
  22. #     include  <TCXLdef.h>
  23. #  endif
  24.                               /*- Memory-flag bits ---------------------*/
  25. #define  MEM_DPMI    0x01     /* DPMI installed */
  26. #define  MEM_VCPI    0x02     /* VCPI installed */
  27. #define  MEM_EMS     0x04     /* EMS installed  */
  28. #define  MEM_XMS     0x08     /* XMS installed  */
  29. #define  MEM_HMA     0x10     /* HMA installed  */
  30.  
  31. #define  EMS_BadSoft    0x80  /*- EMS error-codes ----------------------*/
  32. #define  EMS_BadHdw     0x81  /* NOTE: Error-codes above 0x8F are for   */
  33. #define  EMS_Busy       0x82  /* EMS 4.0 functions only and are not     */
  34. #define  EMS_BadHandle  0x83  /* supported by this library. See the EMS */
  35. #define  EMS_BadFun     0x84  /* spec for further info.                 */
  36. #define  EMS_NoHandles  0x85  /*----------------------------------------*/
  37. #define  EMS_MapErr     0x86
  38. #define  EMS_NotTotal   0x87
  39. #define  EMS_NotFree    0x88
  40. #define  EMS_NotZero    0x89
  41. #define  EMS_BadPage    0x8A
  42. #define  EMS_BadPhys    0x8B
  43. #define  EMS_SaveFull   0x8C
  44. #define  EMS_SaveDup    0x8D
  45. #define  EMS_NoSave     0x8E
  46. #define  EMS_BadSub     0x8F
  47.  
  48. #define  XMS_BadFun     0x80  /*- XMS error-codes ----------------------*/
  49. #define  XMS_Vdisk      0x81  /* see the XMS spec for further info.     */
  50. #define  XMS_A20Err     0x82  /*----------------------------------------*/
  51. #define  XMS_DrivErr    0x8E
  52. #define  XMS_Fatal      0x8F
  53. #define  XMS_NoHMA      0x90
  54. #define  XMS_HMABusy    0x91
  55. #define  XMS_HMASmall   0x92
  56. #define  XMS_HMAFree    0x93
  57. #define  XMS_NoXMS      0xA0
  58. #define  XMS_NoHandle   0xA1
  59. #define  XMS_BadHandle  0xA2
  60. #define  XMS_BadSrc     0xA3
  61. #define  XMS_BadSOff    0xA4
  62. #define  XMS_BadDst     0xA5
  63. #define  XMS_BadDOff    0xA6
  64. #define  XMS_BadLen     0xA7
  65. #define  XMS_BadOver    0xA8
  66. #define  XMS_Parity     0xA9
  67. #define  XMS_NotLock    0xAA
  68. #define  XMS_IsLock     0xAB
  69. #define  XMS_LockOvr    0xAC
  70. #define  XMS_LockFail   0xAD
  71. #define  XMS_SmallUMB   0xB0
  72. #define  XMS_NoUMB      0xB1
  73. #define  XMS_BadUMBSeg  0xB2
  74.  
  75. /*------------------[ Data objects and access macros ]------------------*/
  76.  
  77. TYP   DwdT     _AdrT;                  /* 32-bit addresses */
  78. TYP   IntT     _HdlT;                  /* EMS/XMS handles */
  79. TYP   struct   _Mem  _MemT;
  80. TYP   WrdT     _SegT, FAR  *_SegFP;    /* segment addresses */
  81. TYP   struct   _Xms  _XmsT, FAR *_XmsFP;
  82.  
  83. struct _Mem             /* -[ Memory-control object ]----*/
  84. {  BytT  mMflg;         /* 00|00 : Memory flags          */
  85.    BytT  mDpro;         /* 01|01 : DPMI Processor        */
  86.    WrdT  mDflg;         /* 02|02 : DPMI Flags            */
  87.    DwdT  mDent;         /* 04|04 : DPMI entry point      */
  88.    WrdT  mDver;         /* 08|08 : DPMI version          */
  89.    WrdT  mVver;         /* 0A|0A : VCPI Version          */
  90.    WrdT  mEseg;         /* 0C|0C : EMS Base Segment      */
  91.    WrdT  mEver;         /* 0E|0E : EMS Version           */
  92.    WrdT  mEfre;         /* 10|10 : EMS Free (16kb page)  */
  93.    WrdT  mEtot;         /* 12|12 : EMS Total (16kb page) */
  94.    BytT  mEerr;         /* 14|14 : EMS Error Code        */
  95.    BytT  mXerr;         /* 15|15 : XMS Error Code        */
  96.    WrdT  mXver;         /* 16|16 : XMS Version           */
  97.    DwdT  mXent;         /* 18|18 : XMS Entry Point       */
  98.    WrdT  mXint;         /* 1C|1C : XMS Internal Version  */
  99.    WrdT  mHfre;         /* 1E|1E : HMA free (para)       */
  100.    WrdT  mXtot;         /* 20|20 : XMS total free (1k)   */
  101.    WrdT  mXlrg;         /* 22|22 : XMS largest free (1k) */
  102.    WrdT  mUfre;         /* 24|24 : Largest available UMB */
  103. };                      /* 26|26 ]-----------------------*/
  104.  
  105. GBL   _MemT CDC   _MemCtl;    /*- global memory-control object ---------*/
  106. #define  MemMflg  (_MemCtl.mMflg)               /* Memory Flags         */
  107. #define  MemDPMI  (0 != (MemMflg & MEM_DPMI))   /*    DPMI installed    */
  108. #define  MemVCPI  (0 != (MemMflg & MEM_VCPI))   /*    VCPI installed    */
  109. #define  MemEMS   (0 != (MemMflg & MEM_EMS))    /*    EMS installed     */
  110. #define  MemXMS   (0 != (MemMflg & MEM_XMS))    /*    XMS installed     */
  111. #define  MemHMA   (0 != (MemMflg & MEM_HMA))    /*    HMA installed     */
  112. #define  MemDpro   (_MemCtl.mDpro)              /* DPMI Processor       */
  113. #define  MemD286  (0x02 == MemDpro)             /*    286               */
  114. #define  MemD386  (0x03 == MemDpro)             /*    386               */
  115. #define  MemD486  (0x04 == MemDpro)             /*    486               */
  116. #define  MemDflg  (_MemCtl.mDflg)               /* DPMI Flags           */
  117. #define  MemDf32  (1 = MemDflg)                 /*    32 Bit Support    */
  118. #define  MemDent  (_MemCtl.mDent)               /* DPMI entry point     */
  119. #define  MemDver  (_MemCtl.mDver)               /* DPMI version         */
  120. #define  MemVver  (_MemCtl.mVver)               /* VCPI Version         */
  121. #define  MemEseg  (_MemCtl.mEseg)               /* EMS Base Segment     */
  122. #define  MemEver  (_MemCtl.mEver)               /* EMS Version          */
  123. #define  MemEfre  (_MemCtl.mEfre)               /* EMS Free (16k page)  */
  124. #define  MemEtot  (_MemCtl.mEtot)               /* EMS Total (16k page) */
  125. #define  MemEerr  (_MemCtl.mEerr)               /* EMS Error Code       */
  126. #define  MemXerr  (_MemCtl.mXerr)               /* XMS Error Code       */
  127. #define  MemXver  (_MemCtl.mXver)               /* XMS Version          */
  128. #define  MemXent  (_MemCtl.mXent)               /* XMS Entry Point      */
  129. #define  MemXint  (_MemCtl.mXint)               /* XMS Internal Version */
  130. #define  MemHfre  (_MemCtl.mHfre)               /* HMA free (para)      */
  131. #define  MemXtot  (_MemCtl.mXtot)               /* XMS total free (1k)  */
  132. #define  MemXlrg  (_MemCtl.mXlrg)               /* XMS largest free (1k)*/
  133. #define  MemUfre  (_MemCtl.mUfre)               /* Largest free UMB     */
  134.  
  135. struct   _Xms           /*-[ XMS Move Struct ]-----*/
  136. {  DwdT     xSlen;      /* 00|00 : Length          */
  137.    _HdlT    xShdl;      /* 04|04 : Source handle   */
  138.    _AdrT    xSptr;      /* 06|06 : Source pointer  */
  139.    _HdlT    xTdhl;      /* 0A|0A : Target handle   */
  140.    _AdrT    xTptr;      /* 0C|0C : Target pointer  */
  141. };                      /* 10|10 ]-----------------*/
  142. #define  XmsSlen(x)  ((x)->xSlen)
  143. #define  XmsShdl(x)  ((x)->xShdl)
  144. #define  XmsSptr(x)  ((x)->xSptr)
  145. #define  XmsTdhl(x)  ((x)->xTdhl)
  146. #define  XmsTptr(x)  ((x)->xTptr)
  147.  
  148. /*------------------------[ Function Prototypes ]-----------------------*/
  149. #ifdef   __cplusplus
  150.    extern   "C"   {
  151. #endif
  152.                                        /*- EMS functions ---------------*/
  153. _HdlT PAS   EMSalloc(IntT np);         /* allocate pages                */
  154. IntT  PAS   EMSfree(_HdlT eh);         /* free handle's pages           */
  155. ChrFP PAS   EMSgetnam(_HdlT eh,        /* get handle name               */
  156.    ChrFP np);
  157. IntT  PAS   EMScount(NOARG);           /* get handle count              */
  158. IntT  PAS   EMSpages(_HdlT eh);        /* get handle's page count       */
  159. IntT  PAS   EMSmap(_HdlT eh, IntT pp,  /* map physical to logical pages */
  160.    IntT lp);
  161. IntT  PA